const deepseek = require('./LLM/deepseek');
const prompts = require('./LLM/prompts');

class Code2TestData {
  /**
   * 从代码生成请求数据
   * @param {string} code 后端代码
   * @param {number} count 生成数量
   * @returns {Promise<object>} 请求数据
   */
  async generateTestDataFromCode(code) {
    if (!code || typeof code !== 'string') {
      throw new Error('代码输入必须是非空字符串');
    }

    try {
      const response = await deepseek.call(
        prompts.Code2TestData(code),
        { temperature: 0.5 }
      );
      console.log(response);
      return this._parseResponse(response);
    } catch (error) {
      console.error('请求生成失败:', error);
      throw new Error('生成请求数据失败: ' + error.message);
    }
  }

  _parseResponse(content) {
    // 尝试提取JSON部分
    const jsonMatch = content.match(/```json\n([\s\S]*?)\n```/);
    const jsonStr = jsonMatch ? jsonMatch[1] : content;

    try {
      const result = JSON.parse(jsonStr);
      return result;
    } catch (e) {
      throw new Error('响应解析失败: ' + e.message);
    }
  }
}

module.exports = new Code2TestData();